var gulp = require('gulp');
// 给每个文件添加版本号，文件修改，生成hash码作为文件名。客户端缓存失效，引用新的资源文件
var rev = require("gulp-rev");
    // 文件名改变之后，修改index中的文件引用
var revReplace = require('gulp-rev-replace');
// html中可以通过注释的方法写一些设置
var useref = require("gulp-useref");
// 文件像水一样，流式 filter可以筛选出文件 其中有store可以恢复
var filter = require("gulp-filter");
var uglify = require("gulp-uglify");
var csso = require('gulp-csso');

gulp.task('default', function(){
    var jsFilter = filter ("**/*.js", {restore: true});
    var cssFilter = filter("**/*.css", {restore: true});
    // ！表示排除 表示index.html文件名不要变化
    var indexHtmlFilter = filter ("**/*", "!**/index.html", {restore: true});
    // 拿到需要处理的文件
    return gulp.src("src/index.html")
        // 每个pipe就是一个过滤器，对文件进行处理
        // 处理注释标志的地方 useref 合并
        .pipe(useref())
        // 筛选js
        .pipe(jsFilter)
        // 压缩
        .pipe(uglify())
        // 扔回流里
        .pipe(jsFilter.restore)
        //
        .pipe(cssFilter)
        // 压缩
        .pipe(csso)
        .pipe(cssFilter.restore)
        .pipe(indexHtmlFilter)
        // 生成hash版本号文件名
        .pipe(rev())
        .pipe(indexHtmlFilter.restore)
        // 更新引用文件名
        .pipe(revReplace())
        // 结束
        .pipe(gulp.dest("dist"))
})

gulp.task('hello', function(){
    console.log('hello');
})
